perm filename LOSS.1[CLS,LSP]1 blob sn#826895 filedate 1986-10-27 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00006 ENDMK
CāŠ—;

I read the section of CONCEPT.TEX entitled ``Generic Functions and
Methods.'' I think there are some things in there about which we have not
yet agreed as well as some things which are contrary to what we agreed.
In general, the prose in this section is too chatty and tends to discuss
topics out of order for a specification.  I think that the language that
LGD put together, though possibly not precisely applicable to the current
state of affairs, is quite a bit better in this regard.

I think that section ought to start out with more of a definition of what
a generic function is, rather than leaving it as a reader-performed
inference that a generic function is an ordinary Common Lisp function.

``Like ordinary Lisp functions, generic functions take arguments, ....''

Also, the above sentence is true precisely because generic functions
are ordinary Lisp functions is most ways.

I'm not sure what the following sentence can mean:

``The implementation of a generic function varies from call to
call, depending on the class of one or more of the arguments.''

Is this one of those wonders of microcode?: When you call a generic
function the microcode re-implements the generic function. Certainly
it is not the case that the implementation varies but that the
behavior of the generic function varies from call to call.

This sentence doesn't make much sense either:

``An argument that selects which method or methods to run is called a
specialized argument.''

The argument doesn't perform the selection, the generic function does. The
arguments to a generic function are examined by some part of the generic
function in order to perform the selection.  The important point I'm
making is that the document ought to introduce the notion of method
selection before discussing terms that can have no meaning outside of a
knowledge of those notions.

``The name of a generic function...''

Generic functions do not have names; they can be associated with names
the same way that ordinary Common Lisp functions can be so associated.

``A generic function can have several methods associated with it''

which can be FUNCALL'ed.  Typically a generic-function object is stored as
the function definition of the symbol that is the name of the generic
function.  The methods are part of the generic function. We don't say that
structures have slots associated with them; we say that the structure
comprises the slots.